<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"            
      xmlns:jb="http://java.sun.com/jsf/composite/componentes"
      xmlns:p="http://primefaces.org/ui">

    <ui:composition template="/pages/core/plantilla/plantillaPrincipal.xhtml" >
        <ui:define name="contenido" >             
            <h:form onsubmit="return checkSubmit();"  id="frmPrincipal" enctype="multipart/form-data" >
                <p:panel id="pnlPrincipal" header="#{i18n['panel.titulo.carga']} - #{sessionMBean.titulo} #{cargaMBean.dto.archivoDesc} #{cargaMBean.dto.empresaCobranzaDto.razonSocial} #{cargaMBean.dto.id}" style="#{applicationMBean.estiloTitulo}">
                    <p:growl id="msjMensajes" showDetail="false" autoUpdate="true" />
                    <h:panelGrid id="pgFormDto" columns="8" cellpadding="2"  >
                        <h:outputLabel for="itEmpresa" styleClass="label" value="#{i18n['carga.empresa']}"/>
                        <p:selectOneMenu id="itEmpresa" value="#{cargaMBean.dto.empresaCobranzaDto}"  converter="empresaCobranzaConvert" required="true" 
                                         style="#{applicationMBean.estiloObligatorio}" disabled="#{sessionMBean.accion != applicationMBean.nuevo}">
                            <f:selectItem  itemValue="#{null}" itemLabel="#{i18n['form.general.campo.defecto']}"  /> 
                            <f:selectItems value="#{cargaMBean.listaEmpresa}" var="empCobranzaDto"  itemLabel="#{empCobranzaDto.razonSocial}" itemValue="#{empCobranzaDto}"/>                        
                            <p:ajax listener="#{cargaMBean.listarArchivoCliente()}" update="sOmArchivoCliente"/>
                        </p:selectOneMenu>

                        <h:outputLabel styleClass="label" value="#{i18n['carga.tipo.archivo']}"/>                    
                        <p:selectOneMenu id="sOmTipoArchivo" value="#{cargaMBean.dto.archivo}"
                                         style="#{applicationMBean.estiloObligatorio}"
                                         disabled="#{sessionMBean.accion != applicationMBean.nuevo}">
                            <f:selectItems value="#{cargaMBean.siTipoArchivo}" />
                            <p:ajax listener="#{cargaMBean.listarArchivoCliente()}" update="pgFormDto pBlArchivoCliente sOmArchivoCliente"/>
                        </p:selectOneMenu>

                        <h:outputLabel id="pBlArchivoCliente" styleClass="label" value="#{i18n['carga.archivo.cliente']}" rendered="#{cargaMBean.dto.archivo.equals('P')}" />                    
                        <p:selectOneMenu id="sOmArchivoCliente" value="#{cargaMBean.dto.archivoClienteDto}"  converter="cargaConvert" rendered="#{cargaMBean.dto.archivo.equals('P')}"
                                         style="#{applicationMBean.estiloObligatorio}" disabled="#{sessionMBean.accion != applicationMBean.nuevo}">
                            <f:selectItem  itemValue="#{null}" itemLabel="#{i18n['form.general.campo.defecto']}"  /> 
                            <f:selectItems value="#{cargaMBean.listaCargaDto}" var="cargaDto"  itemLabel="#{cargaDto.nombreArchivo} - #{cargaDto.fechaHoraCarga.toLocaleString()}" itemValue="#{cargaDto}"/>                        
                            <p:ajax update="pBlArchivoCliente"/>
                        </p:selectOneMenu>
                        <h:outputLabel for="itFechaHoraCarga" value="#{i18n['carga.fecha.hora.carga']}" styleClass="label"/>
                        <h:outputText id="itFechaHoraCarga" value="#{cargaMBean.dto.fechaHoraCarga}" styleClass="general">
                            <f:convertDateTime pattern="#{applicationMBean.formatoFechaHoraSegundos}"  timeZone="#{applicationMBean.timeZone}"/>
                        </h:outputText>

                        <h:outputLabel for="itNombreArchivo" value="#{i18n['carga.archivo']}" styleClass="label"/>
                        <h:outputText id="itNombreArchivo" value="#{cargaMBean.dto.nombreArchivo}" styleClass="general"/>

                        <h:outputLabel for="itCantidadRegistros" value="#{i18n['carga.total.registros']}" styleClass="label"/>
                        <p:inputText id="itCantidadRegistros" label="#{i18n['carga.total.registros']}" style="#{applicationMBean.estiloObligatorio}"
                                     value="#{cargaMBean.dto.cantidadRegistros}"  readonly="true"
                                     onkeypress="return fn_validaTecla('entero', this)"
                                     required="false" size="10">
                        </p:inputText>

                        <h:outputLabel for="itCantidadErrados" value="#{i18n['carga.errados']}" styleClass="label"/>
                        <p:inputText id="itCantidadErrados" label="#{i18n['carga.errados']}" style="#{applicationMBean.estiloObligatorio}"
                                     value="#{cargaMBean.dto.cantidadErrados}"  readonly="true"
                                     onkeypress="return fn_validaTecla('entero', this)"
                                     required="false" size="10">
                        </p:inputText>

                        <h:outputLabel for="itCantidadCorrectos" value="#{i18n['carga.correctos']}" styleClass="label"/>
                        <p:inputText id="itCantidadCorrectos" label="#{i18n['carga.correctos']}" style="#{applicationMBean.estiloObligatorio}"
                                     value="#{cargaMBean.dto.cantidadCorrectos}"  readonly="true"
                                     onkeypress="return fn_validaTecla('entero', this)"
                                     required="false" size="10">
                        </p:inputText>                                               

                        <h:outputLabel for="itEstado" value="#{i18n['general.label.estado']}" styleClass="label"/>
                        <h:outputText id="itEstado" value="#{cargaMBean.dto.estadoDesc}" styleClass="general"/>    
                    </h:panelGrid>   
                    <p:spacer height="20" />
                    <p:fileUpload rendered="#{sessionMBean.accion == applicationMBean.nuevo}" styleClass="general"
                                  value="#{cargaMBean.upFile}" mode="advanced"  auto="true"  fileUploadListener="#{cargaMBean.evento}"                  
                                  allowTypes="/(\.|\/)(xls)$/" />  

                    <h:outputLabel value="#{i18n['general.label.campos.auditoria']}" styleClass="subTitulo" rendered="#{cargaMBean.dto.id!=null}"/>
                    <p:separator rendered="#{cargaMBean.dto.id!=null}"/>
                    <h:panelGrid id="pgCamposAuditoria" columns="6" cellspacing="10" rendered="#{cargaMBean.dto.id!=null}">
                        <h:outputLabel styleClass="label" value="#{i18n['general.label.usuario.creacion']}"/>
                        <h:outputLabel styleClass="txtCampo" value="#{cargaMBean.dto.usuarioCreacionDto.descripcion}"/>
                        <h:outputLabel styleClass="label" value="#{i18n['general.label.fecha.creacion']}"/>
                        <h:outputLabel styleClass="txtCampo" value="#{cargaMBean.dto.fechaCreacion}">
                            <f:convertDateTime pattern="#{applicationMBean.formatoFechaHoraSegundos}"  timeZone="#{applicationMBean.timeZone}"/>
                        </h:outputLabel>                            
                        <h:outputLabel styleClass="label" value="#{i18n['general.label.terminal.creacion']}"/>
                        <h:outputLabel styleClass="txtCampo" value="#{cargaMBean.dto.terminalCreacion}"/>
                        <h:outputLabel styleClass="label" value="#{i18n['general.label.usuario.modificacion']}"/>
                        <h:outputLabel styleClass="txtCampo" value="#{cargaMBean.dto.usuarioDto.descripcion}"/>
                        <h:outputLabel styleClass="label" value="#{i18n['general.label.fecha.modificacion']}"/>
                        <h:outputLabel styleClass="txtCampo" value="#{cargaMBean.dto.fecha}">
                            <f:convertDateTime pattern="#{applicationMBean.formatoFechaHoraSegundos}"  timeZone="#{applicationMBean.timeZone}"/>
                        </h:outputLabel>                            
                        <h:outputLabel styleClass="label" value="#{i18n['general.label.terminal.modificacion']}"/>
                        <h:outputLabel styleClass="txtCampo" value="#{cargaMBean.dto.terminal}"/>
                    </h:panelGrid>

                    <f:facet name="footer">
                        <p:commandButton title="#{i18n['general.button.guardar.tip']}" accesskey="#{applicationMBean.keyGuardar}" ajax="false"
                                         icon="ui-icon ui-icon-disk" rendered="#{sessionMBean.accion == applicationMBean.nuevo}"
                                         onclick="return confirm('#{i18n.general_mensaje_confirmacion}');" immediate="true"
                                         value="#{i18n['general.button.guardar']}" 
                                         style="#{applicationMBean.estilosBtnGuardar}"
                                         action="#{cargaMBean.save}">
                        </p:commandButton>                        

                        <p:commandButton title="#{i18n['general.button.atras.tip']}" accesskey="#{applicationMBean.keyRetroceder}" ajax="false"
                                         icon="ui-icon ui-icon-arrowreturnthick-1-w" immediate="true"
                                         style="#{applicationMBean.estilosBtnRetroceder}"
                                         value="#{i18n['general.button.atras']}" 
                                         action="#{cargaMBean.retroceder}">                                    
                        </p:commandButton>



                        <p:commandButton title="#{i18n['carga.boton.cerrar']}" id="btnCerrar"
                                         icon="ui-icon ui-icon-disk"
                                         style="#{applicationMBean.estilosBtnRechazar}"
                                         value="#{i18n['carga.boton.cerrar']}" ajax="true" update=":frmPrincipal" 
                                         onclick="return confirm('#{i18n.general_mensaje_confirmacion}');" immediate="true"
                                         rendered="#{sessionMBean.accion == applicationMBean.editar and cargaMBean.dto.estado == 'A' and cargaMBean.dto.estado != 'I'}"
                                         action="#{cargaMBean.cerrar}">
                        </p:commandButton>
                        <p:commandButton title="#{i18n['carga.boton.validar']}" id="btnValidar"
                                         icon="ui-icon ui-icon-disk"
                                         style="#{applicationMBean.estilosBtnNuevoDetalle}"
                                         value="#{i18n['carga.boton.validar']}" ajax="false" update=":frmPrincipal,:frmPrincipal:msjMensajes" 
                                         rendered="#{sessionMBean.accion == applicationMBean.editar and cargaMBean.dto.estado != 'A' and cargaMBean.dto.estado != 'C' and cargaMBean.dto.estado != 'I'}"
                                         action="#{cargaMBean.validar}">
                        </p:commandButton>

                        <p:commandButton title="#{i18n['carga.boton.anular']}" id="btnAnular"
                                         icon="ui-icon ui-icon-disk"
                                         style="#{applicationMBean.estilosBtnRechazar}"
                                         onclick="return confirm('#{i18n.general_mensaje_confirmacion}');" immediate="true"
                                         value="#{i18n['carga.boton.anular']}" ajax="true" update=":frmPrincipal" 
                                         rendered="#{sessionMBean.accion == applicationMBean.editar and cargaMBean.dto.estado != 'C' and cargaMBean.dto.estado != 'I'}"
                                         action="#{cargaMBean.anular}">
                        </p:commandButton>


                        <p:commandButton title="#{i18n['carga.boton.activar']}" id="btnActivar"
                                         icon="ui-icon ui-icon-disk"
                                         style="#{applicationMBean.estilosBtnConfirmar}"
                                         value="#{i18n['carga.boton.activar']}" immediate="true" update=":frmPrincipal"
                                         rendered="#{sessionMBean.accion == applicationMBean.editar &amp;&amp; cargaMBean.dto.estado == 'V'}"
                                         action="#{cargaMBean.activar}">                                    
                        </p:commandButton>

                        <p:commandButton title="#{i18n['carga.boton.reactivar']}" id="btnReactivar"
                                         icon="ui-icon ui-icon-disk"
                                         style="#{applicationMBean.estilosBtnConfirmar}"
                                         value="#{i18n['carga.boton.reactivar']}" immediate="true" update=":frmPrincipal"
                                         rendered="#{sessionMBean.accion == applicationMBean.editar &amp;&amp; cargaMBean.dto.estado == 'C'}"
                                         action="#{cargaMBean.reactivar}">                                    
                        </p:commandButton>
                    </f:facet>
                </p:panel>

                <p:panel id="pnlPrincipalDeta" header="#{i18n['panel.titulo.carga.deta']}" style="#{applicationMBean.estiloTitulo}" rendered="#{cargaMBean.dto.id != null}">
                    <h:panelGrid id="pngTabla" columns="1">
                        <p:dataTable id="tblPrincipalDeta" value="#{cargaMBean.dto.listaDetalle}" var="dto" widgetVar="widTable"                                     
                                     emptyMessage="#{i18n['carga.deta.no.detalles']}" styleClass="estiloPanel">                        
                            <p:column style="text-align:center;">
                                <h:panelGrid id="pgBotonesGrillaDeta" columns="10" cellspacing="5" styleClass="estiloPanelGrid">
                                    <p:commandButton icon="ui-icon ui-icon-search" title="#{i18n['general.button.ver.tip']}"
                                                     action="#{cargaMBean.verDetalle}" ajax="true"
                                                     oncomplete="carDialogDeta.show()" update=":frmDetalle:pgFormDtoDeta"
                                                     >
                                        <f:setPropertyActionListener value="#{dto}" target="#{cargaMBean.detaDto}"/>
                                    </p:commandButton>
                                </h:panelGrid>
                            </p:column>   
                            <p:column headerText="#{i18n['general.label.id']}"  styleClass="general">
                                <h:outputText value="#{dto.id}" styleClass="general" />
                            </p:column>
                            <p:column headerText="#{i18n['carga.fila']}" styleClass="general">
                                <h:outputText value="#{dto.fila}" styleClass="general"/>
                            </p:column>
                            <p:column headerText="#{i18n['carga.columna1']}" styleClass="general">
                                <h:outputText value="#{dto.columna1}" styleClass="general"/>
                            </p:column>
                            <p:column headerText="#{i18n['carga.columna2']}">
                                <h:outputText value="#{dto.columna2}" styleClass="general" />
                            </p:column>
                            <p:column headerText="#{i18n['carga.columna3']}">
                                <h:outputText value="#{dto.columna3}" styleClass="general" />
                            </p:column>
                            <p:column headerText="#{i18n['carga.columna4']}">
                                <h:outputText value="#{dto.columna4}" styleClass="general" />
                            </p:column>
                            <p:column headerText="#{i18n['carga.columna5']}">
                                <h:outputText value="#{dto.columna5}" styleClass="general" />
                            </p:column>
                            <p:column headerText="#{i18n['carga.columna7']}" rendered="#{cargaMBean.dto.archivo == 'P'}">
                                <h:outputText value="#{dto.columna7}" styleClass="general" >
                                     <f:convertNumber pattern="#{applicationMBean.formatoMontos}" />
                                </h:outputText>
                            </p:column>
                            <p:column headerText="#{i18n['carga.columna9']}">
                                <h:outputText value="#{dto.columna9}" styleClass="general" />
                            </p:column>
                            <p:column headerText="#{i18n['carga.columna26']}">
                                <h:outputText value="#{dto.columna26}" styleClass="general" />
                            </p:column>                            
                            <p:column headerText="#{i18n['carga.columna28']}">
                                <h:outputText value="#{dto.columna28}" styleClass="general" />
                            </p:column>                                                        
                            <p:column headerText="#{i18n['carga.columna30']}">
                                <h:outputText value="#{dto.columna30}" styleClass="general" />
                            </p:column>
                            <p:column headerText="#{i18n['carga.columna31']}">
                                <h:outputText value="#{dto.columna31}" styleClass="general" />
                            </p:column>
                            <p:column headerText="#{i18n['carga.columna32']}">
                                <h:outputText value="#{dto.columna32}" styleClass="general" />
                            </p:column>
                            <p:column headerText="#{i18n['carga.descripcion.error']}">
                                <h:outputText value="#{dto.descripcionError}" styleClass="general" />
                            </p:column>                            
                            <p:column headerText="#{i18n['general.label.estado']}">
                                <h:outputText value="#{dto.estadoTexto}" styleClass="#{dto.inlineStyle}" />
                            </p:column>   
                        </p:dataTable>
                    </h:panelGrid>
                </p:panel>
            </h:form>
            <p:dialog id="idDlgBitacoraEntidad" header="#{i18n['bitacora.titulo']}" widgetVar="dlgBitacoraEntidad" resizable="false"  
                      width="900" height="450" modal="true">                        
                <ui:include src="/pages/bitacora/bitacoras.xhtml" /> 
            </p:dialog>
            <p:dialog id="dialogDetalle" header="#{i18n['popup.titulo.carga.deta']}" widgetVar="carDialogDeta" resizable="false"  
                      width="350" height="550" modal="true">  
                <p:messages id="msjDialogDeta" showDetail="false" autoUpdate="true"/>
                <ui:include src="/pages/cobranza/carga/cargaDeta.xhtml" /> 
            </p:dialog>
        </ui:define>
    </ui:composition>
</html>